অ্যাপাচি কমন্স কালেকশনস (Apache Commons Collections) হল একটি শক্তিশালী জাভা লাইব্রেরি যা Java Collections Framework এর উপর ভিত্তি করে উন্নত এবং বিশেষায়িত কালেকশন ক্লাস সরবরাহ করে। অ্যাপাচি কমন্স কালেকশনস, জাভার মৌলিক ডেটা স্ট্রাকচারগুলির বাইরে আরও উন্নত এবং কার্যকরী কালেকশন ক্লাস প্রদান করে, যা ডেটা ম্যানিপুলেশনকে আরও সহজ, দ্রুত এবং পারফরম্যান্ট করে তোলে।
এখানে আমরা কিছু গুরুত্বপূর্ণ Enhanced Collection Classes সম্পর্কে আলোচনা করব, যা Apache Commons Collections লাইব্রেরিতে পাওয়া যায়।
Bag হল একটি বিশেষ ধরনের কালেকশন যা Set এর মতো কাজ করে, তবে এটি ডুপ্লিকেট উপাদান সাপোর্ট করে। এতে একাধিক বার একই উপাদান যোগ করা যেতে পারে এবং এর জন্য উপাদানের উপস্থিতি count (গণনা) ট্র্যাক করা হয়। Bag আইফেসটি HashBag, TreeBag, ইত্যাদি বিভিন্ন বাস্তবায়নের মাধ্যমে পাওয়া যায়।
import org.apache.commons.collections4.Bag;
import org.apache.commons.collections4.bag.HashBag;
public class BagExample {
public static void main(String[] args) {
// Create a Bag
Bag<String> bag = new HashBag<>();
// Add elements to the bag
bag.add("apple", 3);
bag.add("banana", 2);
bag.add("orange", 1);
// Display the counts of elements
System.out.println("Apple count: " + bag.getCount("apple")); // Output: 3
System.out.println("Total elements: " + bag.size()); // Output: 6
}
}
এখানে HashBag ব্যবহার করা হয়েছে, যা একটি অর্ডার বিহীন এবং counting Bag প্রকারের কালেকশন।
BidiMap হল একটি দ্বৈত মানচিত্র, যা আপনাকে key-to-value এবং value-to-key উভয় দিক থেকে মান অ্যাক্সেস করতে দেয়। BidiMap মূলত Map এর মতো কাজ করে, তবে এটি মানের বিপরীতে কী খুঁজে পাওয়ার জন্য সক্ষম। এটি DualHashBidiMap এবং HashedBidiMap এর মতো বাস্তবায়নের মাধ্যমে ব্যবহার করা হয়।
import org.apache.commons.collections4.BidiMap;
import org.apache.commons.collections4.bidimap.DualHashBidiMap;
public class BidiMapExample {
public static void main(String[] args) {
// Create a BidiMap
BidiMap<String, String> bidiMap = new DualHashBidiMap<>();
// Add key-value pairs
bidiMap.put("A", "Apple");
bidiMap.put("B", "Banana");
// Access by key
System.out.println("A -> " + bidiMap.get("A")); // Output: Apple
// Access by value
System.out.println("Apple -> " + bidiMap.getKey("Apple")); // Output: A
}
}
এখানে DualHashBidiMap ব্যবহার করা হয়েছে, যা একটি BidiMap বাস্তবায়ন, যা উভয় দিক থেকে মানের অ্যাক্সেস করতে সক্ষম।
MultiMap হল একটি মানচিত্র যেখানে একাধিক মান একই কী এর অধীনে থাকতে পারে। সাধারণত, একটি কী একাধিক মানের সাথে সম্পর্কিত থাকতে পারে, এবং এটি একাধিক মান সংগ্রহ করার জন্য ব্যবহৃত হয়। MultiMap এর সাধারণ বাস্তবায়ন হলো ArrayListValuedHashMap এবং MultiValueMap।
import org.apache.commons.collections4.MultiMap;
import org.apache.commons.collections4.map.MultiValueMap;
import org.apache.commons.collections4.map.ListOrderedMap;
public class MultiMapExample {
public static void main(String[] args) {
// Create a MultiMap
MultiMap<String, String> multiMap = new MultiValueMap<>();
// Add elements under the same key
multiMap.put("fruits", "apple");
multiMap.put("fruits", "banana");
multiMap.put("fruits", "orange");
// Print values associated with the key "fruits"
System.out.println(multiMap.get("fruits")); // Output: [apple, banana, orange]
}
}
এখানে, MultiValueMap ব্যবহৃত হয়েছে, যা একাধিক মান সন্নিবেশ করতে সক্ষম।
ListOrderedMap হল একটি মানচিত্র যা উপাদানগুলোকে ইনসার্ট করার সময়ে তাদের ইনসার্ট করার ক্রম অনুসারে সংরক্ষণ করে। এটি LinkedHashMap এর মতো কাজ করে, তবে ListOrderedMap এ কী এবং মানের মানচিত্র তৈরি করা হয় এবং তা সংরক্ষণ করা হয় ইনসার্ট করার ক্রমে।
import org.apache.commons.collections4.ListOrderedMap;
import org.apache.commons.collections4.map.ListOrderedMap;
public class ListOrderedMapExample {
public static void main(String[] args) {
// Create a ListOrderedMap
ListOrderedMap<String, String> map = new ListOrderedMap<>();
// Add elements
map.put("first", "apple");
map.put("second", "banana");
map.put("third", "orange");
// Print keys in the order of insertion
System.out.println(map.keySet()); // Output: [first, second, third]
}
}
এখানে, ListOrderedMap ইনসার্ট করার সময়ে কী এবং মানের সম্পর্ক সংরক্ষণ করে এবং উপাদানগুলির ক্রমগত অ্যাক্সেসের সুবিধা দেয়।
অ্যাপাচি কমন্স কালেকশনস Transformer এবং Filter ক্লাস সরবরাহ করে, যা ডেটা স্ট্রাকচারের উপাদানগুলির উপর বিভিন্ন অপারেশন যেমন পরিবর্তন বা ফিল্টার করা সহজ করে তোলে।
import org.apache.commons.collections4.Transformer;
import org.apache.commons.collections4.collection.ListUtils;
import java.util.Arrays;
import java.util.List;
public class TransformerExample {
public static void main(String[] args) {
List<String> list = Arrays.asList("apple", "banana", "orange");
// Transformer to convert strings to uppercase
Transformer<String, String> transformer = new Transformer<String, String>() {
public String transform(String input) {
return input.toUpperCase();
}
};
// Apply transformer
List<String> transformedList = ListUtils.transformedList(list, transformer);
System.out.println(transformedList); // Output: [APPLE, BANANA, ORANGE]
}
}
এখানে Transformer ব্যবহার করে একটি সিম্পল ট্রান্সফর্মেশন করা হয়েছে, যা স্ট্রিংয়ের সব অক্ষর বড় অক্ষরে রূপান্তর করে।
Apache Commons Collections একটি শক্তিশালী লাইব্রেরি যা Bag, BidiMap, MultiMap, ListOrderedMap, Transformer এবং Filter এর মতো উন্নত ডেটা স্ট্রাকচার সরবরাহ করে। এই উন্নত কালেকশন ক্লাসগুলি ডেটা ম্যানিপুলেশন এবং সংগঠন সহজ করে তোলে, এবং পারফরম্যান্স উন্নত করতে সাহায্য করে, বিশেষ করে জটিল ডেটা স্ট্রাকচারে কাজ করার সময়ে। Commons Collections ব্যবহারের মাধ্যমে জাভা প্রোগ্রামাররা আরও শক্তিশালী, নমনীয় এবং কার্যকরী ডেটা স্ট্রাকচার ব্যবহার করতে পারেন।
BidiMap হল Apache Commons Collections এর একটি বিশেষ ডেটা স্ট্রাকচার যা bidirectional mapping এর সুবিধা প্রদান করে। সাধারণত, একটি Map ডেটা স্ট্রাকচারে, আপনি key → value ম্যাপিং করতে পারেন, কিন্তু BidiMap এ আপনি value → key ম্যাপিংও করতে পারেন, অর্থাৎ আপনি একটি মানের (value) উপর ভিত্তি করে সংশ্লিষ্ট কী (key) বের করতে পারবেন। এটি সাধারণ Map এর চেয়ে আরও বেশি নমনীয় এবং শক্তিশালী।
BidiMap হল একটি বিশেষ ধরনের ম্যাপ যা দুটি দিক থেকে ডেটা অ্যাক্সেসের সুযোগ দেয়:
এটি DualHashBidiMap অথবা LinkedBidiMap এর মতো ক্লাস দ্বারা বাস্তবায়িত হয়।
DualHashBidiMap হল BidiMap এর একটি বাস্তবায়ন যা দ্রুত কার্যক্ষমতা প্রদান করে। এটি HashMap এর মতো কাজ করে এবং দুই দিক থেকে ম্যাপিং সম্পাদন করতে সহায়তা করে।
DualHashBidiMap
ব্যবহারimport org.apache.commons.collections4.BidiMap;
import org.apache.commons.collections4.map.DualHashBidiMap;
public class BidiMapExample {
public static void main(String[] args) {
// DualHashBidiMap তৈরি
BidiMap<String, String> bidiMap = new DualHashBidiMap<>();
// কী এবং মান যোগ করা
bidiMap.put("first", "apple");
bidiMap.put("second", "banana");
bidiMap.put("third", "cherry");
// key → value
System.out.println("First key maps to value: " + bidiMap.get("first")); // Output: apple
// value → key
System.out.println("Banana maps to key: " + bidiMap.getKey("banana")); // Output: second
// সব কী এবং মান দেখতে
System.out.println("All keys: " + bidiMap.keySet());
System.out.println("All values: " + bidiMap.values());
}
}
আউটপুট:
First key maps to value: apple
Banana maps to key: second
All keys: [first, second, third]
All values: [apple, banana, cherry]
এখানে:
bidiMap.put("first", "apple")
: এই লাইনে "first"
কী এর জন্য "apple"
মান যুক্ত করা হয়েছে।bidiMap.get("first")
: "first"
কী থেকে সংশ্লিষ্ট মান "apple"
পাওয়া গেছে।bidiMap.getKey("banana")
: "banana"
মান থেকে সংশ্লিষ্ট কী "second"
বের করা হয়েছে।LinkedBidiMap হল আরেকটি BidiMap বাস্তবায়ন, যা ইনসার্ট অর্ডার বজায় রাখে। এটি ডেটার ইনসার্ট অর্ডার অনুযায়ী কী-মানের সম্পর্ক রক্ষা করে।
LinkedBidiMap
ব্যবহারimport org.apache.commons.collections4.BidiMap;
import org.apache.commons.collections4.map.LinkedBidiMap;
public class LinkedBidiMapExample {
public static void main(String[] args) {
// LinkedBidiMap তৈরি
BidiMap<String, String> bidiMap = new LinkedBidiMap<>();
// কী এবং মান যোগ করা
bidiMap.put("first", "apple");
bidiMap.put("second", "banana");
bidiMap.put("third", "cherry");
// key → value
System.out.println("Third key maps to value: " + bidiMap.get("third")); // Output: cherry
// value → key
System.out.println("Apple maps to key: " + bidiMap.getKey("apple")); // Output: first
// ইনসার্ট অর্ডার দেখতে
System.out.println("All keys in insertion order: " + bidiMap.keySet());
}
}
আউটপুট:
Third key maps to value: cherry
Apple maps to key: first
All keys in insertion order: [first, second, third]
এখানে:
LinkedBidiMap
ব্যবহার করলে, কী এবং মান ইনসার্ট অর্ডারে প্রদর্শিত হবে।Apache Commons Collections এর BidiMap ব্যবহার করে আপনি জটিল ডেটা অ্যাক্সেস এবং ম্যানিপুলেশন কাজগুলো আরও সহজ, দ্রুত এবং কার্যকরভাবে করতে পারবেন।
অ্যাপাচি কমন্স কালেকশনস (Apache Commons Collections) লাইব্রেরিতে MultiMap এবং MultiValueMap হল বিশেষ ধরনের ডেটা স্ট্রাকচার, যা একটি কী (key) এর জন্য একাধিক মান (value) সংরক্ষণ করতে সক্ষম। এটি সাধারণ Map
এর সীমাবদ্ধতা কাটিয়ে জটিল ডেটা সংরক্ষণ ও পরিচালনা সহজ করে।
MultiMap একটি ইন্টারফেস যা একাধিক মানকে একটি কী-এর সাথে অ্যাসোসিয়েট করতে সক্ষম করে। প্রতিটি কী-এর সাথে সংযুক্ত মানগুলো সাধারণত একটি Collection
(যেমন, List
, Set
) হিসেবে সংরক্ষিত হয়।
মূল বৈশিষ্ট্য:
Collection
হিসেবে যোগ হয়।MultiValueMap হল MultiMap ইন্টারফেসের একটি সাধারণ ইমপ্লিমেন্টেশন, যা HashMap
এবং ArrayList
ব্যবহার করে কী-মান সংরক্ষণ করে। এটি একটি কী-এর জন্য একাধিক মানের ব্যবস্থাপনা সহজ করে তোলে।
মূল বৈশিষ্ট্য:
List
হিসেবে সংরক্ষিত হয়।import org.apache.commons.collections4.MultiMap;
import org.apache.commons.collections4.map.MultiValueMap;
public class MultiValueMapExample {
public static void main(String[] args) {
// MultiValueMap তৈরি
MultiMap<String, String> multiMap = new MultiValueMap<>();
// মান যোগ করা
multiMap.put("Fruit", "Apple");
multiMap.put("Fruit", "Banana");
multiMap.put("Fruit", "Orange");
multiMap.put("Vegetable", "Carrot");
multiMap.put("Vegetable", "Potato");
// একাধিক মান একসঙ্গে দেখা
System.out.println("Fruits: " + multiMap.get("Fruit"));
System.out.println("Vegetables: " + multiMap.get("Vegetable"));
// নির্দিষ্ট কী-এর মান মুছে ফেলা
multiMap.removeMapping("Fruit", "Apple");
System.out.println("Updated Fruits: " + multiMap.get("Fruit"));
}
}
আউটপুট:
Fruits: [Apple, Banana, Orange]
Vegetables: [Carrot, Potato]
Updated Fruits: [Banana, Orange]
বৈশিষ্ট্য | MultiMap | MultiValueMap |
---|---|---|
টাইপ | একটি ইন্টারফেস | একটি ইমপ্লিমেন্টেশন |
স্টোরেজ স্ট্রাকচার | Collection ব্যবহার করে | HashMap + ArrayList |
ইমপ্লিমেন্টেশন | বিভিন্ন ক্লাস দ্বারা ইমপ্লিমেন্ট | সরাসরি ইমপ্লিমেন্টেশন |
ডেটা সংরক্ষণ পদ্ধতি | একটি কী-এর জন্য মানগুলো গ্রুপ করা | একটি কী-এর জন্য List ব্যবহার |
MultiMap এবং MultiValueMap ডেটা সংরক্ষণ ও পরিচালনা সহজ করার জন্য দুর্দান্ত সরঞ্জাম। এটি সাধারণ Map
এর সীমাবদ্ধতাগুলো কাটিয়ে একটি কী-এর জন্য একাধিক মান সংরক্ষণ ও পরিচালনার সুযোগ প্রদান করে।
MultiValueMap হলো MultiMap এর সরাসরি ইমপ্লিমেন্টেশন, যা ডেটা প্রসেসিংয়ের সময় সহজ এবং দ্রুত কার্যক্ষমতার জন্য আদর্শ।
MultiKeyMap এবং MultiKey হলো অ্যাপাচি কমন্স কালেকশনস লাইব্রেরির গুরুত্বপূর্ণ ডেটা স্ট্রাকচার, যা ডেভেলপারদের একটি কী (Key) হিসেবে একাধিক মান (Value) ব্যবহার করতে সহায়তা করে। সাধারণত, যখন একটি Map
-এ একাধিক মান (keys) দিয়ে একটি ভ্যালু (value) সংরক্ষণ করতে হয়, তখন MultiKeyMap অত্যন্ত কার্যকর।
MultiKeyMap হলো এমন একটি ডেটা স্ট্রাকচার, যেখানে একাধিক কী একত্রে মিলিয়ে একটি ভ্যালুর জন্য কার্যকর হয়। এটি সাধারণ ম্যাপের মতোই কাজ করে, তবে এটি একাধিক কী-কে একটি একক কী হিসেবে গণ্য করে।
MultiKey হলো একটি ক্লাস, যা একাধিক কী-কে একত্রে প্যাকেজ করে। এটি মূলত MultiKeyMap-এর অভ্যন্তরে ব্যবহৃত হয়, যেখানে একাধিক মানকে একটি যৌথ কী হিসেবে ট্রিট করা হয়।
import org.apache.commons.collections4.map.MultiKeyMap;
public class MultiKeyMapExample {
public static void main(String[] args) {
// MultiKeyMap তৈরি
MultiKeyMap<String, String> multiKeyMap = new MultiKeyMap<>();
// ডেটা সংরক্ষণ
multiKeyMap.put("John", "Smith", "Developer");
multiKeyMap.put("Jane", "Doe", "Designer");
multiKeyMap.put("Sam", "Wilson", "Manager");
// ডেটা রিট্রিভ করা
System.out.println("John Smith's profession: " + multiKeyMap.get("John", "Smith"));
System.out.println("Jane Doe's profession: " + multiKeyMap.get("Jane", "Doe"));
// মডিফাই করা
multiKeyMap.put("John", "Smith", "Senior Developer");
System.out.println("John Smith's updated profession: " + multiKeyMap.get("John", "Smith"));
}
}
John Smith's profession: Developer
Jane Doe's profession: Designer
John Smith's updated profession: Senior Developer
import org.apache.commons.collections4.keyvalue.MultiKey;
import org.apache.commons.collections4.map.MultiKeyMap;
public class MultiKeyExample {
public static void main(String[] args) {
MultiKeyMap<String, String> multiKeyMap = new MultiKeyMap<>();
// MultiKey ব্যবহার করে ডেটা সংরক্ষণ
MultiKey<String> multiKey = new MultiKey<>("Alice", "Brown");
multiKeyMap.put(multiKey, "Analyst");
// MultiKey দিয়ে ডেটা রিট্রিভ করা
System.out.println("Alice Brown's profession: " + multiKeyMap.get("Alice", "Brown"));
}
}
Alice Brown's profession: Analyst
null
কী এবং মান সাপোর্ট করে না। সঠিকভাবে হ্যান্ডেল করতে হবে।MultiKeyMap এবং MultiKey জাভার কালেকশন ফ্রেমওয়ার্কের বাইরে এমন ডেটা ম্যানেজমেন্টের সুযোগ দেয়, যেখানে একাধিক কী সমন্বয় ব্যবহার করতে হয়। এটি ডেটা স্ট্রাকচারের জটিলতা কমিয়ে কোডিংকে সহজ এবং কার্যকর করে তোলে। ডেটা অ্যাক্সেসের পারফরম্যান্স এবং কার্যকারিতা বৃদ্ধি করার জন্য অ্যাপাচি কমন্স কালেকশনসের এই ফিচারগুলো অত্যন্ত গুরুত্বপূর্ণ।
অ্যাপাচি কমন্স কালেকশনস (Apache Commons Collections) লাইব্রেরি ডেটা ম্যানিপুলেশন এবং কালেকশন ম্যানেজমেন্টের জন্য শক্তিশালী টুল সরবরাহ করে। এর একটি গুরুত্বপূর্ণ বৈশিষ্ট্য হল Predicated Collections, যা প্রেডিকেট ব্যবহার করে একটি কালেকশনকে ফিল্টার এবং যাচাই করতে সক্ষম। এই ফিচারটি ব্যবহার করে আপনি সহজে শর্তসাপেক্ষ নির্বাচনের মাধ্যমে আপনার কালেকশনটি কাস্টমাইজ করতে পারেন। এটি আপনাকে নির্দিষ্ট শর্ত পূরণকারী উপাদানগুলি কালেকশনে রাখতে সাহায্য করে।
Predicated Collections হল এমন কালেকশন যা প্রেডিকেট (predicate) ব্যবহার করে তার উপাদানগুলির উপর শর্ত প্রয়োগ করে। প্রেডিকেট সাধারণত একটি লজিক্যাল শর্ত, যেমন একটি ফাংশন যা একটি ভ্যালুকে যাচাই করে এবং true
বা false
ফেরত দেয়। এই প্রক্রিয়া মূলত কালেকশন আইটেমগুলির মধ্যে শর্তসাপেক্ষ ফিল্টারিং নিশ্চিত করতে সাহায্য করে। আপনি চাইলে কালেকশন থেকে শুধুমাত্র সেই উপাদানগুলো নির্বাচন করতে পারেন, যেগুলি আপনার নির্দিষ্ট শর্ত পূরণ করে।
Predicated Collections আপনার কালেকশন ক্লাসে একটি predefined predicate বা শর্ত যুক্ত করে যা কালেকশনের আইটেমগুলো যাচাই করবে। প্রেডিকেট ফাংশনটি একটি কালেকশন আইটেম গ্রহণ করে এবং তার উপর নির্ধারিত শর্ত যাচাই করে true
অথবা false
ফেরত দেয়।
এটি কালেকশনের মধ্যে কাস্টম ফিল্টার প্রয়োগ করার জন্য উপকারী এবং এতে আপনার ডেটার শুদ্ধতা বজায় থাকে।
Predicated Collections ব্যবহার করার জন্য, আপনাকে প্রথমে একটি Predicate তৈরি করতে হবে এবং তারপর সেই প্রেডিকেটটি একটি কালেকশনে প্রয়োগ করতে হবে।
import org.apache.commons.collections4.Predicate;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import java.util.ArrayList;
import java.util.List;
public class PredicatedCollectionExample {
public static void main(String[] args) {
// Create a list of integers
List<Integer> numbers = new ArrayList<>();
numbers.add(10);
numbers.add(15);
numbers.add(20);
numbers.add(25);
// Define a predicate (condition) to filter even numbers
Predicate<Integer> isEven = new Predicate<Integer>() {
@Override
public boolean evaluate(Integer number) {
return number % 2 == 0;
}
};
// Use CollectionUtils to filter the list based on the predicate
List<Integer> evenNumbers = ListUtils.predicatedList(numbers, isEven);
System.out.println("Even Numbers: " + evenNumbers); // Output: [10, 20]
}
}
এখানে:
List<Integer>
তৈরি করেছি এবং তার মধ্যে কিছু পূর্ণসংখ্যা (integer) যোগ করেছি।Predicate
ফাংশন তৈরি করা হয়েছে যা শর্ত হিসেবে চেক করে যে সংখ্যাটি even (যুগল) কিনা।ListUtils.predicatedList()
মেথড ব্যবহার করে আমরা এই প্রেডিকেটটি আমাদের মূল তালিকাতে প্রয়োগ করেছি, এবং তার মাধ্যমে even সংখ্যা (যুগল সংখ্যা) ফিল্টার করেছি।Predicated Collections শুধুমাত্র একটি শর্ত (predicate) প্রয়োগ করার জন্য সীমাবদ্ধ নয়। আপনি একাধিক শর্তের সাথে AND, OR, বা NOT অপারেটর ব্যবহার করে একাধিক প্রেডিকেট কম্বাইন করতে পারেন।
import org.apache.commons.collections4.Predicate;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import java.util.ArrayList;
import java.util.List;
public class MultiplePredicatesExample {
public static void main(String[] args) {
// Create a list of integers
List<Integer> numbers = new ArrayList<>();
numbers.add(10);
numbers.add(15);
numbers.add(20);
numbers.add(25);
// Define a predicate to filter even numbers
Predicate<Integer> isEven = new Predicate<Integer>() {
@Override
public boolean evaluate(Integer number) {
return number % 2 == 0;
}
};
// Define another predicate to filter numbers greater than 15
Predicate<Integer> isGreaterThan15 = new Predicate<Integer>() {
@Override
public boolean evaluate(Integer number) {
return number > 15;
}
};
// Combine both predicates using AND logic
Predicate<Integer> combinedPredicate = isEven.and(isGreaterThan15);
// Use CollectionUtils to filter the list based on the combined predicate
List<Integer> filteredNumbers = ListUtils.predicatedList(numbers, combinedPredicate);
System.out.println("Filtered Numbers: " + filteredNumbers); // Output: [20]
}
}
এখানে:
even
সংখ্যা এবং অপরটি greater than 15
শর্তের জন্য।and()
মেথড ব্যবহার করে দুটি প্রেডিকেটকে একত্রিত করেছি, এবং সেই অনুযায়ী কালেকশন থেকে সঠিক আইটেম নির্বাচন করা হয়েছে।Predicated Collections অ্যাপাচি কমন্স কালেকশনস (Apache Commons Collections) লাইব্রেরির একটি শক্তিশালী ফিচার, যা আপনাকে শর্তসাপেক্ষ ডেটা ফিল্টারিং এবং কালেকশন ম্যানিপুলেশন করার জন্য সহজ পদ্ধতি প্রদান করে। আপনি প্রেডিকেটের মাধ্যমে কালেকশনের আইটেমগুলোর উপর শর্ত প্রয়োগ করতে পারেন, যা আপনাকে শুধুমাত্র সঠিক মানের উপাদানগুলি নির্বাচন করতে সাহায্য করে। এটি Java ডেভেলপারদের জন্য একটি অত্যন্ত কার্যকরী এবং কার্যক্ষম ফিচার, যা ডেটা ম্যানিপুলেশন এবং যাচাই প্রক্রিয়াকে অনেক সহজ করে তোলে।
common.read_more